package com.gitee.linmt.mapper;

import com.gitee.linmt.entity.UserInfo;
import com.gitee.linmt.enums.Gender;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author <a href="mailto:lin-mt@outlook.com">lin-mt</a>
 */
public interface UserInfoMapper {
    
    /**
     * 根据主键Id查询数据
     *
     * @param id 主键
     * @return 用户信息
     */
    UserInfo getById(@Param("id") Long id);
    
    /**
     * 保存用户信息
     *
     * @param userInfo 用户信息
     */
    void save(@Param("userInfo") UserInfo userInfo);
    
    /**
     * 根据性别查询用户信息
     *
     * @param gender 性别
     * @return 该性别的所有用户
     */
    List<UserInfo> listByGender(@Param("gender") Gender gender);
    
    /**
     * 根据性别删除用户信息
     *
     * @param gender 用户信息
     */
    void deleteByGender(@Param("gender") Gender gender);
    
    /**
     * 更新用户信息
     *
     * @param userInfo 用户信息
     */
    void update(@Param("userInfo") UserInfo userInfo);
    
    /**
     * 删除所有数据
     */
    void deleteAll();
}
